using System;
using System.Collections.Generic;
using System.Text;

namespace Raptor.Client
{
  class GenOptions
  {
    public enum GenAction
    {
      Specific = 0,
      All = 1
    }
    
    private bool m_GenDO = false;
    private bool m_GenCT = false;
    private bool m_GenEAL = false;
    private bool m_GenWS = false;
    private bool m_GenCdoDO = false;
    private bool m_GenCdoCOL = false;
    private bool m_GenSPCreate = false;
    private bool m_GenSPRetrieve = false;
    private bool m_GenSPUpdate = false;
    private bool m_GenSPDelete = false;
    private bool m_GenSPRetrieveAll = false;
    private bool m_GenPartialDO = false;
    private bool m_GenPartialCT = false;
    private bool m_GenPartialEAL = false;
    private bool m_GenPartialCDODO = false;
    private bool m_GenPartialCDOCOL = false;
    private bool m_GenWithEmbededObjects = false;
    private bool m_GenStoredProcedures = true;
    private bool m_Audit = false;
    private bool m_DynamicQueries = false;
    private bool m_Searchable = false;
    private bool m_Limit = false;
    private string m_LimitCount = "";
    private List<List<String>> m_CurrentTableFields = new List<List<string>>();
    private List<List<String>> m_CurrentSearchResults = new List<List<string>>();
    private List<List<String>> m_CurrentEmbedObjects = new List<List<string>>();
    private List<List<String>> m_CurrentDOOptions = new List<List<string>>();

    private GenAction m_GenAction = new GenAction();
    //public string[] sEmbededObjects; 

    public bool GenDo
    {
      get { return (this.m_GenDO); }
      set { this.m_GenDO = value; }
    }

    public bool GenCT
    {
      get { return (this.m_GenCT); }
      set { this.m_GenCT = value; }
    }

    public bool GenEAL
    {
      get { return (this.m_GenEAL); }
      set { this.m_GenEAL = value; }
    }

    public bool GenWS
    {
      get { return (this.m_GenWS); }
      set { this.m_GenWS = value; }
    }

    public bool GenCdoDO
    {
      get { return (this.m_GenCdoDO); }
      set { this.m_GenCdoDO = value; }
    }

    public bool GenCdoCOL
    {
      get { return (this.m_GenCdoCOL); }
      set { this.m_GenCdoCOL = value; }
    }

    public bool GenSPCreate
    {
      get { return (this.m_GenSPCreate); }
      set { this.m_GenSPCreate = value; }
    }

    public bool GenSPRetrieve
    {
      get { return (this.m_GenSPRetrieve); }
      set { this.m_GenSPRetrieve = value; }
    }

    public bool GenSPUpdate
    {
      get { return (this.m_GenSPUpdate); }
      set { this.m_GenSPUpdate = value; }
    }

    public bool GenSPDelete
    {
      get { return (this.m_GenSPDelete); }
      set { this.m_GenSPDelete = value; }
    }

    public bool GenSPRetrieveAll
    {
      get { return (this.m_GenSPRetrieveAll); }
      set { this.m_GenSPRetrieveAll = value; }
    }

    public GenAction SystemGenAction
    {
      get { return (this.m_GenAction); }
      set { this.m_GenAction = value; }
    }

    public bool GenPartialDO
    {
      get { return (this.m_GenPartialDO); }
      set { this.m_GenPartialDO = value; }
    }

    public bool GenPartialCT
    {
      get { return (this.m_GenPartialCT); }
      set { this.m_GenPartialCT = value; }
    }

    public bool GenPartialEAL
    {
      get { return (this.m_GenPartialEAL); }
      set { this.m_GenPartialEAL = value; }
    }

    public bool GenPartialCDODO
    {
      get { return (this.m_GenPartialCDODO); }
      set { this.m_GenPartialCDODO = value; }
    }

    public bool GenPartialCDOCOL
    {
      get { return (this.m_GenPartialCDOCOL); }
      set { this.m_GenPartialCDOCOL = value; }
    }

    public bool GenWithEmbededObjects
    {
      get { return (this.m_GenWithEmbededObjects); }
      set { this.m_GenWithEmbededObjects = value; }
    }

    public bool GenStoredProcedures
    {
      get { return (this.m_GenStoredProcedures); }
      set { this.m_GenStoredProcedures = value; }
    }

    public List<List<String>> CurrentTableFields
    {
      get { return this.m_CurrentTableFields; }
      set { this.m_CurrentTableFields = value; }
    }

    public List<List<String>> CurrentSearchResults
    {
      get { return this.m_CurrentSearchResults; }
      set { this.m_CurrentSearchResults = value; }
    }

    public List<List<String>> CurrentEmbedObjects
    {
      get { return this.m_CurrentEmbedObjects; }
      set { this.m_CurrentEmbedObjects = value; }
    }

    public List<List<String>> CurrentDOOptions
    {
      get { return this.m_CurrentDOOptions; }
      set { this.m_CurrentDOOptions = value; }
    }

    public bool Audit
    {
      get { return (this.m_Audit); }
      set { this.m_Audit = value; }
    }

    public bool DynamicQueries
    {
      get { return (this.m_DynamicQueries); }
      set { this.m_DynamicQueries = value; }
    }

    public bool Searchable
    {
      get { return (this.m_Searchable); }
      set { this.m_Searchable = value; }
    }

    public bool Limit
    {
      get { return (this.m_Limit); }
      set { this.m_Limit = value; }
    }

    public string LimitTo
    {
      get { return (this.m_LimitCount); }
      set { this.m_LimitCount = value; }
    }

    public void Reset()
    {
      this.GenDo = false;
      this.GenCT = false;
      this.GenEAL = false;
      this.GenWS = false;
      this.GenCdoDO = false;
      this.GenCdoCOL = false;
      this.GenSPCreate = false;
      this.GenSPRetrieve = false;
      this.GenSPUpdate = false;
      this.GenSPDelete = false;
      this.GenSPRetrieveAll = false;
      this.GenPartialDO = false;
      this.GenPartialCT = false;
      this.GenPartialEAL = false;
      this.GenPartialCDODO = false;
      this.GenPartialCDOCOL = false;
      this.GenWithEmbededObjects = false;
      this.GenStoredProcedures = true;
      this.m_CurrentDOOptions = null;
      this.m_CurrentEmbedObjects = null;
      this.m_CurrentSearchResults = null;
      this.m_CurrentTableFields = null;
    }
  }
}
